package main

import (
	"github.com/gin-gonic/gin"
)

func main() {

	r := gin.Default()
	r.GET("/:id", func(c *gin.Context) {
		// 最普通的GET方式 c.Param
		//http://127.0.0.1:9999/2   {"data":"2","message":"Hello World"}
		// http://127.0.0.1:9999 不带参数无法用
		c.JSON(200, gin.H{
			"message": "Hello World",
			"data":    c.Param("id"),
		})
	})

	r.POST("add", func(c *gin.Context) {
		// 参数在 body 里面的 form-data里面
		c.JSON(200, gin.H{
			"message": "Hello World",
			"data":    c.PostForm("id") + c.PostForm("name"),
		})
	})

	// 用map 接受 JSON 参数
	r.POST("json", func(c *gin.Context) {

		p := make(map[string]interface{})
		err := c.BindJSON(&p)
		if err == nil {
			c.JSON(200, gin.H{
				"message": "dddd",
				"data":    p["name"],
			})

			return
		}

		c.JSON(200, gin.H{
			"message": "error",
		})
	})

	// 用结构体  接受 JSON 参数
	type U struct {
		Name string `json:"name"`
		Age  int    `json:"age"`
	}
	r.POST("json2", func(c *gin.Context) {
		var u U
		err := c.BindJSON(&u)
		if err == nil {
			c.JSON(200, gin.H{
				"message": "dddd",
				"data":    u,
			})
		}
	})

	r.Run(":9999")
}
